﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;

namespace vudu.Pruebas
{
    [TestFixture]
    public class PruebaEsquemaEvaluacion
    {
       [Test]
       public void PruebaInsertarEvaluacion()
        {
            //Se crea una nueva evaluacion para insertar al esquema 
            Evaluacion evaluacionA = new Evaluacion("Prueba A", "Quiz", 50, new DateTime(2012, 10, 11), 10);

            EnlaceLogico fachada = new EnlaceLogico();

            int resultado = fachada.InsertarEvaluacion(evaluacionA);
            Assert.AreNotEqual(0, resultado);
        }

       [Test]
       public void PruebaConsultarSeccionesProfesor()
        {
            List<SeccionMateria> secciones = new List<SeccionMateria>();
            Profesor miProfesor = new Profesor();

            miProfesor.Crn = 1;

            EnlaceLogico fachada = new EnlaceLogico();

            secciones = fachada.ConsultarSeccionesProfesor(miProfesor);

            Assert.IsNotEmpty(secciones);
            
        }

       [Test]
       public void PruebaConsultarFalloSeccionesProfesor()
        {
            List<SeccionMateria> secciones = new List<SeccionMateria>();
            Profesor miProfesor = new Profesor();

            miProfesor.Crn = 0;

            EnlaceLogico fachada = new EnlaceLogico();

            secciones = fachada.ConsultarSeccionesProfesor(miProfesor);

            Assert.IsEmpty(secciones);
        }

       [Test]
       public void PruebaConsultarEvaluacionesPorSeccion()
        {
            Evaluacion evaluacionA = new Evaluacion("Prueba A", "Quiz", 50, new DateTime(2012, 10, 11), 10);
            List<Evaluacion> evaluaciones = new List<Evaluacion>();
            SeccionMateria miSeccion = new SeccionMateria();

            miSeccion.IdSeccionMateria = 10;

            EnlaceLogico fachada = new EnlaceLogico();

            evaluaciones = fachada.ConsultarEvaluacionPorSeccion(miSeccion);

            Assert.IsNotEmpty(evaluaciones);
            Assert.AreEqual(evaluaciones.ElementAt(0).Nombre, evaluacionA.Nombre);

        }

       [Test]
       public void PruebaConsultarEsquemaEvaluacionSinNota()
        {
            List<SeccionMateria> secciones = new List<SeccionMateria>();
            Profesor miProfesor = new Profesor();

            miProfesor.Crn = 1;

            EnlaceLogico fachada = new EnlaceLogico();

            secciones = fachada.ConsultarEsquemasDeEvaluacionSinNotasProfesor(miProfesor);

            Assert.IsNotEmpty(secciones);            
        }

       [Test]
       public void PruebaConsultarEsquemaEvaluacionProfesor()
        {
            List<SeccionMateria> secciones = new List<SeccionMateria>();
            Profesor miProfesor = new Profesor();

            miProfesor.Crn = 1;

            EnlaceLogico fachada = new EnlaceLogico();

            secciones = fachada.ConsultarEsquemasDeEvaluacionProfesor(miProfesor);

            Assert.IsNotEmpty(secciones);
        }

       [Test]
       public void PruebaConsultarEsquemaEvaluacionEstudiante()
       {
           List<SeccionMateria> secciones = new List<SeccionMateria>();
           Estudiante miEstudiante = new Estudiante();

           miEstudiante.IdEst = 1;

           EnlaceLogico fachada = new EnlaceLogico();

           secciones = fachada.ConsultarEsquemasEvaluacionEstudiante(miEstudiante);

           Assert.IsNotEmpty(secciones);
       }

       [Test]
       public void PruebaModificarEvaluacion()
       {
           Evaluacion evaluacionA = new Evaluacion("Prueba B", "Proyecto", 20, new DateTime(2013, 9, 10), 10);
           List<Evaluacion> evaluaciones = new List<Evaluacion>();
           SeccionMateria miSeccion = new SeccionMateria();

           miSeccion.IdSeccionMateria = 10;

           EnlaceLogico fachada = new EnlaceLogico();

           evaluaciones = fachada.ConsultarEvaluacionPorSeccion(miSeccion);

           evaluacionA.IdEvaluacion = evaluaciones.ElementAt(0).IdEvaluacion;

           bool resultado = fachada.ModificarEvaluacion(evaluacionA);
           evaluaciones = fachada.ConsultarEvaluacionPorSeccion(miSeccion);

           Assert.IsTrue(resultado);
           Assert.AreEqual(evaluacionA.Nombre, evaluaciones.ElementAt(0).Nombre);
           
       }

       [Test]
       public void PruebaEliminarEsquemaEvaluacion()
       {
           SeccionMateria miSeccion = new SeccionMateria();

           miSeccion.IdSeccionMateria = 10;

           EnlaceLogico fachada = new EnlaceLogico();

           bool resultado = fachada.EliminarEsquemaDeEvaluacion(miSeccion);

           Assert.IsTrue(resultado);

       }




    }
}